var Calendar = function () {
    return {
        //main function to initiate the module
        init: function () {
            Calendar.initCalendar();
        },

        initCalendar: function () {

            if (!jQuery().fullCalendar) {
                return;
            }

            var date = new Date();
            var d = date.getDate();
            var m = date.getMonth();
            var y = date.getFullYear();

            var h = {
                left: 'prev,next,today',
                center: 'title',
                right: ''
            };


            var initDrag = function (el) {
                // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)
                // it doesn't need to have a start or end
                var eventObject = {
                    title: $.trim(el.text()) // use the element's text as the event title
                };
                // store the Event Object in the DOM element so we can get to it later
                el.data('eventObject', eventObject);
                // make the event draggable using jQuery UI
                el.draggable({
                    zIndex: 999,
                    revert: true, // will cause the event to go back to its
                    revertDuration: 0 //  original position after the drag
                });
            }

            var addEvent = function (title) {
                title = title.length == 0 ? "Untitled Event" : title;
                var html = $('<div class="external-event label label-default">' + title + '</div>');
                jQuery('#event_box').append(html);
                initDrag(html);
            }

            $('#external-events div.external-event').each(function () {
                initDrag($(this))
            });

            $('#event_add').unbind('click').click(function () {
                var title = $('#event_title').val();
                var allEvents = $('#calendar').fullCalendar('clientEvents');
                if (allEvents.length > 0) {

                }
                else {
                    addEvent(title);
                }
            });

            //predefined events
            $('#event_box').html("");
           // addEvent("My Event 1");

            var parURL= function getAbsolutePath() {
                var loc = window.location;
                return loc.href.substr(loc.href.lastIndexOf('/')+1,2);
            }
            //var par = parURL();
            var par = $('#bookid').val();
            var sourceFullView = { url: '/HolidayRequest/GetEvents/'+par };
            $('#calendar').fullCalendar('destroy'); // destroy the calendar
            $('#calendar').fullCalendar({ //re-initialize the calendar
                header: h,
                slotMinutes: 15,
                editable: true,
                droppable: true, // this allows things to be dropped onto the calendar !!!
               
                eventDrop:
                function (event, dayDelta, minuteDelta, allDay, revertFunc) {
                        var value = $("#statusname").val();
                        if (value != 'Pending') {
                            revertFunc();
                            return;
                        }        
                     },
                events: '/HolidayRequest/GetEvents/' + par,
                //eventClick: function (calEvent, jsEvent, view) {
                //    //do something
                //    // alert('Event: ' + calEvent.title +' ID is ' + calEvent.ID);
                //    // $('#calendar').fullCalendar('removeEvents', calEvent._id);
                //    // change the border color just for fun
                //    if (confirm("Are you sure want delete this event?")) {
                //        // $(this).css('border-color', 'red');
                //        $('#calendar').fullCalendar('removeEvents', function (calEvent) {
                //            return true;
                //        });
                //        $('#event_box').html(""); 
                //        addEvent("My Event 1");
                //    }
                //}
                //,
                eventResize: function (event, dayDelta, minuteDelta, revertFunc) {
                    var value = $("#statusname").val();
                    if (value != 'Pending') {
                        revertFunc();
                        return;
                    }
                },
                viewRender: function (view, element) {                  
                   // $('#calendar').fullCalendar('refetchEvents');
                }
                , buttonText: {
                    prev: '<i class="m-icon-swapleft m-icon-white"></i>',
                    next: '<i class="m-icon-swapright m-icon-white"></i>',
                    today: '<i class="icon-calendar"></i> To Day'
                }
            });

        }

    };

}();